package com.lemon.exam.common.service;

import reactor.core.publisher.Mono;

/**
 * Elasticsearch 接口对象
 *
 * @author Lemon
 * @since 2025/4/25 17:23
 */
public interface ElasticsearchService {

    /**
     * 创建索引
     *
     * @param indexName 索引名称
     * @return Mono<Void>
     */
    Mono<Void> createIndices(String... indexName);

    /**
     * 索引是否存在
     *
     * @param indexName 索引名称
     * @return Mono<Boolean>
     */
    Mono<Boolean> indexExists(String indexName);

    /**
     * 创建索引，如果不存在
     *
     * @param indexName
     * @return
     */
    Mono<Void> createIndexIfNotExists(String indexName);

    /**
     * 创建索引，如果不存在
     *
     * @param entity
     * @return
     */
    Mono<Boolean> createIndexIfNotExists(Class<?> entity);

    /**
     * 根据索引删除所有数据
     *
     * @param indexName
     * @return
     */
    Mono<Boolean> deleteAll(String indexName);
}
